#!/usr/bin/env ruby
# frozen_string_literal: true

$parent_pid = ARGV[0].to_i

puts "Hello from #{Process.pid} my parent is #{$parent_pid}"

Thread.new do

  def alive?(pid)
    Process.kill(0, pid)
    true
  rescue
    false
  end

  while true
    begin
      unless alive?($parent_pid)
        STDERR.puts "Parent was terminated!"
        Process.kill "TERM", Process.pid
        sleep 10
        Process.kill "KILL", Process.pid
      end
    rescue => e
      STDERR.puts "URGENT monitoring thread had an exception #{e}"
    end
    sleep 1
  end
end

sleep
